gtk+3.0.git
8 years agoscrolledwindow: Fix code sample compilation
Timm Bäder [Wed, 3 Jan 2018 12:51:03 +0000 (13:51 +0100)]
scrolledwindow: Fix code sample compilation

8 years agoDrop an unused enum value
Matthias Clasen [Mon, 1 Jan 2018 18:27:56 +0000 (13:27 -0500)]
Drop an unused enum value

We haven't had a GtkWindow::frame-event since the
linux-fb backends demise.

8 years agofilechooser: Add missing array annotations to add_choice()
Rico Tzschichholz [Sat, 6 Jan 2018 08:34:44 +0000 (09:34 +0100)]
filechooser: Add missing array annotations to add_choice()

8 years agoiconview: Prevent ownership transfer of cell out-param in get_item_at_pos()
Rico Tzschichholz [Sat, 6 Jan 2018 08:40:26 +0000 (09:40 +0100)]
iconview: Prevent ownership transfer of cell out-param in get_item_at_pos()

8 years agoAdd test for GtkActionable GtkListBoxRow.
Arnaud Bonatti [Wed, 29 Nov 2017 07:52:59 +0000 (08:52 +0100)]
Add test for GtkActionable GtkListBoxRow.

https://bugzilla.gnome.org/show_bug.cgi?id=741633

8 years agoMake GtkListBoxRow GtkActionable.
Arnaud Bonatti [Fri, 24 Nov 2017 13:33:42 +0000 (14:33 +0100)]
Make GtkListBoxRow GtkActionable.

https://bugzilla.gnome.org/show_bug.cgi?id=741633

8 years agoconfigure: Don't declare functions in AC_TRY_COMPILE and AC_LANG_PROGRAM
Ting-Wei Lan [Tue, 2 Jan 2018 17:25:49 +0000 (01:25 +0800)]
configure: Don't declare functions in AC_TRY_COMPILE and AC_LANG_PROGRAM

Both AC_TRY_COMPILE and AC_LANG_PROGRAM put code passed to their second
arguments to the body of the main function. This means that we cannot
and should not declare functions there, or we end up checking whether
the compiler support nested functions instead of whether a compiler or
linker flag is supported.

GCC supports nested functions and tests succeed. Clang doesn't support
nested functions, so tests fail and -fvisibility=hidden won't be used.
This means that functions which are not intended to be used by other
programs, such as gtk_menu_tracker*, gtk_action_observ*,
gtk_menu_muxer_*, become global symbols with default visibility.

GNOME Shell has a private library libgnome-shell-menu.so, which also has
symbols gtk_menu_tracker*, gtk_action_observ*, gtk_menu_muxer_* that are
intended to be used by GNOME Shell itself. When GNOME Shell still used
Autotools build system, the executable gnome-shell explicitly linked to
libgnome-shell-menu.so, so the linker loaded libgnome-shell-menu.so
before libgtk-3.so.0 and GNOME Shell used correct symbols from its
private library.

However, after GNOME Shell switched to Meson build system, gnome-shell
executable no longer lists libgnome-shell-menu.so as its dependency.
Even if we adds it to the build file, it won't be listed in DT_NEEDED of
gnome-shell because Meson uses -Wl,--as-needed by default. This causes
the runtime linker to load libgtk-3.so.0 before libgnome-shell-menu.so
and symbols gtk_menu_tracker*, gtk_action_observ*, gtk_menu_muxer_* are
bound to libgtk-3.so.0 instead of libgnome-shell-menu.so. GNOME Shell
hangs when opening more than one window because it uses functions from
the wrong library.

This problem is already fixed in OpenBSD ports. The article describing
it can be found on OpenBSD Journal with this link:
https://undeadly.org/cgi?action=article;sid=20170930133438

https://bugzilla.gnome.org/show_bug.cgi?id=791943

8 years agogtk: remove non-breaking space, probably there by mistake
Arnaud Rebillout [Sat, 16 Dec 2017 16:12:50 +0000 (23:12 +0700)]
gtk: remove non-breaking space, probably there by mistake

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: fix some formatting inconsistencies along the way
Arnaud Rebillout [Sat, 16 Dec 2017 15:50:12 +0000 (22:50 +0700)]
css docs: fix some formatting inconsistencies along the way

Mostly spaces.

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: remove useless <para>
Arnaud Rebillout [Sat, 16 Dec 2017 15:32:08 +0000 (22:32 +0700)]
css docs: remove useless <para>

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: swap border-width and border-left shorthands, to keep going clockwise
Arnaud Rebillout [Sat, 16 Dec 2017 15:29:30 +0000 (22:29 +0700)]
css docs: swap border-width and border-left shorthands, to keep going clockwise

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: Fix refentry and refname
Arnaud Rebillout [Sat, 16 Dec 2017 14:37:21 +0000 (21:37 +0700)]
css docs: Fix refentry and refname

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: Ensure the first column does not break for every table
Arnaud Rebillout [Sat, 16 Dec 2017 15:02:00 +0000 (22:02 +0700)]
css docs: Ensure the first column does not break for every table

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: Get rid of non-breaking hyphens
Arnaud Rebillout [Sat, 16 Dec 2017 14:47:34 +0000 (21:47 +0700)]
css docs: Get rid of non-breaking hyphens

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: Get rid of non-breaking spaces
Arnaud Rebillout [Sat, 16 Dec 2017 14:42:13 +0000 (21:42 +0700)]
css docs: Get rid of non-breaking spaces

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agocss docs: Fix some angle brackets for percentage
Arnaud Rebillout [Sat, 16 Dec 2017 14:33:51 +0000 (21:33 +0700)]
css docs: Fix some angle brackets for percentage

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agowindow: Avoid redundantly getting the GDK window
Timm Bäder [Fri, 29 Dec 2017 07:52:14 +0000 (08:52 +0100)]
window: Avoid redundantly getting the GDK window

meta-pick of commit c1573a1fda7c3b917b6809795b9668629fe58883: the
variable gdk_window is used in a check, but we may as well use it again
to avoid calling _gtk_widget_get_window() again unnecessarily.

8 years agothemes: Regenerate CSS to reflect recent commits
Daniel Boles [Mon, 1 Jan 2018 19:52:47 +0000 (19:52 +0000)]
themes: Regenerate CSS to reflect recent commits

8 years agoHighContrast: Avoid expander↔combobox interference
Daniel Boles [Mon, 1 Jan 2018 18:49:09 +0000 (18:49 +0000)]
HighContrast: Avoid expander↔combobox interference

as per commit b4b9aa1e5fab6a1f8c27b768813ab4ed04f3cd6f

8 years agocss docs: Fix duplicate border‑right‑width
Arnaud Rebillout [Sat, 16 Dec 2017 15:26:33 +0000 (22:26 +0700)]
css docs: Fix duplicate border‑right‑width

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=791710

8 years agoAdwaita: Avoid expander<>combobox interference
Matthias Clasen [Thu, 28 Dec 2017 13:39:29 +0000 (08:39 -0500)]
Adwaita: Avoid expander<>combobox interference

Putting a combobox in an expander was causing the combo arrow
to go sideways. Increase the specificity with which we address
the expander arrow to avoid that.

8 years agoSlovenian update ...
Matej Urbančič [Sun, 31 Dec 2017 11:28:54 +0000 (12:28 +0100)]
Slovenian update ...

8 years agoSlovenian update ...
Matej Urbančič [Sun, 31 Dec 2017 11:28:23 +0000 (12:28 +0100)]
Slovenian update ...

8 years agofontchooser: Add global keynav
Matthias Clasen [Wed, 27 Dec 2017 22:21:30 +0000 (17:21 -0500)]
fontchooser: Add global keynav

Starting to type should focus the search entry and start
a search.

8 years agoAdd some deprecation annotations
Matthias Clasen [Tue, 26 Dec 2017 03:42:01 +0000 (22:42 -0500)]
Add some deprecation annotations

These functions have been removed in master, and their
replacements are already available here.

8 years agofont button: Some followup cleanups
Matthias Clasen [Thu, 21 Dec 2017 16:32:24 +0000 (11:32 -0500)]
font button: Some followup cleanups

Don't refer to the font-name property in docs either, and
don't use deprecated API internally.

8 years agofont button: Deprecate the font-name property
Matthias Clasen [Thu, 21 Dec 2017 16:12:23 +0000 (11:12 -0500)]
font button: Deprecate the font-name property

It has long been redundant with the GtkFontChooser::font
property.

8 years agotests: Stop using gtk_font_button_get_font_name
Matthias Clasen [Thu, 21 Dec 2017 16:10:13 +0000 (11:10 -0500)]
tests: Stop using gtk_font_button_get_font_name

We can instead use the GtkFontChooser::font property.

8 years agoRange: Fix inverted vert scrolling on vert Ranges…
Daniel Boles [Tue, 19 Dec 2017 21:18:41 +0000 (21:18 +0000)]
Range: Fix inverted vert scrolling on vert Ranges…

The change in the previous patch should only be applied when the Range
is oriented horizontally.

https://bugzilla.gnome.org/show_bug.cgi?id=737175

8 years agoRange: Fix inverted vert scrolling on horiz Ranges
Daniel Boles [Tue, 19 Dec 2017 18:07:02 +0000 (18:07 +0000)]
Range: Fix inverted vert scrolling on horiz Ranges

Users expect, & previous patches have tried to assure, that scrolling up
over a horizontal Range will cause the value to increase & vice-versa.
But the path using directions was still negating the delta & decreasing
the value on scrolling up. This could be seen on Win32 or X without XI2.

So, only negate the delta when scrolling down (or left), not up, so that
scrolling up (or right) will make the value increase for any event type.

https://bugzilla.gnome.org/show_bug.cgi?id=737175#c5

8 years agofont chooser: Stop listening to style-updated
Matthias Clasen [Tue, 19 Dec 2017 16:34:43 +0000 (11:34 -0500)]
font chooser: Stop listening to style-updated

The only time a style-updated indicates we need
to reload fonts is when it is synthesized by GtkSettings
in response to a fontconfig timestamp change, but
we are listening to those already, anyway.

8 years agoAvoid calling unsetenv too late
Matthias Clasen [Wed, 29 Nov 2017 04:27:57 +0000 (23:27 -0500)]
Avoid calling unsetenv too late

Stash the DESKTOP_AUTOSTART_ID env var in a constructor,
before any threads have been created.

https://bugzilla.gnome.org/show_bug.cgi?id=790963

8 years agowayland: Handle scale 3 for cursors
Matthias Clasen [Sun, 17 Dec 2017 21:41:00 +0000 (16:41 -0500)]
wayland: Handle scale 3 for cursors

This is just a bandaid solution to make scale 3 work.
If people seriously want to go for scales larger than
that, we need a better solution.

8 years agoinspector: Allow to bump scale to 3
Matthias Clasen [Sun, 17 Dec 2017 21:40:10 +0000 (16:40 -0500)]
inspector: Allow to bump scale to 3

Might as well allow this, for 'large scale testing'.

8 years agocups: Warn only once if colord is not available
Matthias Clasen [Sun, 17 Dec 2017 22:09:55 +0000 (17:09 -0500)]
cups: Warn only once if colord is not available

No need to keep complaining about this.

https://bugzilla.gnome.org/show_bug.cgi?id=791650

8 years agoRevert "css: Replace _AFFECTS_TEXT with _TEXT_SIZE and _TEXT_CLIP"
Matthias Clasen [Sun, 17 Dec 2017 16:20:50 +0000 (11:20 -0500)]
Revert "css: Replace _AFFECTS_TEXT with _TEXT_SIZE and _TEXT_CLIP"

This reverts commit 492469a94af35c2b102bcf7f07046ef2d09b2b3d.

People have been reporting missing invalidations with this change.

8 years agoRevert "css: Fix segfault when GtkCssStyleChange is NULL on gtk_widget_real_style_upd...
Matthias Clasen [Sun, 17 Dec 2017 16:20:15 +0000 (11:20 -0500)]
Revert "css: Fix segfault when GtkCssStyleChange is NULL on gtk_widget_real_style_updated()"

This reverts commit 7e253f4bd3977a67cf7040ce11e24b9d06100f6a.

8 years agoDon't place dnd cursor in placeholder text
Matthias Clasen [Sun, 17 Dec 2017 15:52:33 +0000 (10:52 -0500)]
Don't place dnd cursor in placeholder text

That is just misleading - the entire placeholder text is going
to be replaced by the drop.

8 years agolistbox: Fix a crash during keynav
Matthias Clasen [Fri, 15 Dec 2017 23:46:21 +0000 (18:46 -0500)]
listbox: Fix a crash during keynav

The code was asserting something that was not always holding
true. We can hit row == NULL here on page-up too. Handle that
case by moving to the first row.

https://bugzilla.gnome.org/show_bug.cgi?id=791549

8 years agox11: Avoid crash in fallback move emulation
Matthias Clasen [Fri, 15 Dec 2017 21:17:27 +0000 (16:17 -0500)]
x11: Avoid crash in fallback move emulation

Quietly do nothing when there is already an ongoing operation.
This matches the behavior of the ewmh code, and is much nicer
than a crash.

https://bugzilla.gnome.org/show_bug.cgi?id=789054

8 years agocss: Fix segfault when GtkCssStyleChange is NULL on gtk_widget_real_style_updated()
Juan Pablo Ugarte [Thu, 14 Dec 2017 18:35:40 +0000 (15:35 -0300)]
css: Fix segfault when GtkCssStyleChange is NULL on gtk_widget_real_style_updated()

https://bugzilla.gnome.org/show_bug.cgi?id=791281

8 years agogdk/win32/gdkselection-win32.c: Fix build without G_ENABLE_DEBUG
Chun-wei Fan [Thu, 14 Dec 2017 17:11:17 +0000 (01:11 +0800)]
gdk/win32/gdkselection-win32.c: Fix build without G_ENABLE_DEBUG

_gdk_win32_data_to_string() is only available when G_ENABLE_DEBUG is
defined, so as in gdkproperty-win32.c, use GDK_NOTE on the parts where
we assemble and output the debug messages.

8 years agoUpdate Russian translation
Stas Solovey [Thu, 14 Dec 2017 10:05:27 +0000 (10:05 +0000)]
Update Russian translation

8 years agoUpdate Russian translation
Stas Solovey [Thu, 14 Dec 2017 09:58:07 +0000 (09:58 +0000)]
Update Russian translation

8 years agoplacesview: Make middle click work
Matthias Clasen [Tue, 12 Dec 2017 18:56:15 +0000 (13:56 -0500)]
placesview: Make middle click work

This does not cost us much, and improves consistency.

8 years agolink button: Set a drag icon
Matthias Clasen [Sun, 10 Dec 2017 18:58:27 +0000 (13:58 -0500)]
link button: Set a drag icon

It is a bit odd to drag nothing around, so set an icon.

8 years agoFix updating the widget accessible description when using its tooltip
Colomban Wendling [Mon, 20 Feb 2017 16:39:40 +0000 (17:39 +0100)]
Fix updating the widget accessible description when using its tooltip

We need to notify ATK the description changed when the tooltip text associated
with the widget changes and gtk_widget_accessible_get_description() would use
it as the description.

https://bugzilla.gnome.org/show_bug.cgi?id=779009

8 years agocss: Replace _AFFECTS_TEXT with _TEXT_SIZE and _TEXT_CLIP
Timm Bäder [Thu, 12 Oct 2017 11:18:07 +0000 (13:18 +0200)]
css: Replace _AFFECTS_TEXT with _TEXT_SIZE and _TEXT_CLIP

It was used to mark css properties that affect widgets with text, but it
caused unnecessary invalidations. E.g. 'color' was marked as
AFFECTS_TEXT but changing just the color of a label should not
automatically queue a resize, which is what the code in
gtk_widget_real_style_updated does.

Replace this flag with GTK_CSS_AFFECTS_TEXT_SIZE and
GTK_CSS_AFFECTS_TEXT_CLIP, which GtkWidget can use only if the widget
actually has text.

https://bugzilla.gnome.org/show_bug.cgi?id=791281

8 years agocssshadowvalue: don't apply the y_scale offset twice to the shadow
Marco Trevisan (Treviño) [Thu, 7 Dec 2017 22:00:01 +0000 (17:00 -0500)]
cssshadowvalue: don't apply the y_scale offset twice to the shadow

As per commit 942e904 this changed causing a regression that
seems to be visible only when scale > 2.

https://bugzilla.gnome.org/show_bug.cgi?id=791363

8 years agowayland: Destroy the xdg_imported after the wl_surface
Jonas Ådahl [Fri, 1 Dec 2017 08:03:34 +0000 (16:03 +0800)]
wayland: Destroy the xdg_imported after the wl_surface

This way the window manager can handle destruction while having the
transient-for relationship still valid.

https://bugzilla.gnome.org/show_bug.cgi?id=791062

8 years agowayland: Maybe postpone xdg-foreign state setup until mapping
Jonas Ådahl [Fri, 1 Dec 2017 04:18:30 +0000 (12:18 +0800)]
wayland: Maybe postpone xdg-foreign state setup until mapping

In order to map a window with the correct initial parent-child
relationship when a modal dialog is set up to be a child of an imported
foreign window, the relationship must be set up before the window is
mapped.

In order to do this, if a window is not yet mapped, postpone the
relationship setup until when the window is eventually mapped.

https://bugzilla.gnome.org/show_bug.cgi?id=791062

8 years agoplacesview: Present FUSE-reachable network shares in Other Locations
Colin Leroy [Tue, 12 Sep 2017 13:32:36 +0000 (15:32 +0200)]
placesview: Present FUSE-reachable network shares in Other Locations

The documentation about gtk_file_chooser_set_local_only() states
that "non-native files may still be available using the native
filesystem via a userspace filesystem (FUSE)."
The code that made this possible in GTK+2 was missing from GTK+3 and
that represented a regression for Linux users in numerous applications
(Firefox, Thunderbird, Chromium, ...)

https://bugzilla.gnome.org/show_bug.cgi?id=787128

8 years agoautocleanups: allow g_autoptr() usage with GtkTreePath
Christian Hergert [Tue, 5 Dec 2017 03:22:40 +0000 (19:22 -0800)]
autocleanups: allow g_autoptr() usage with GtkTreePath

As the summary says, this allows using g_autoptr(GtkTreePath). This is
useful for API that uses out parameters for GtkTreePath that need to be
freed.

https://bugzilla.gnome.org/show_bug.cgi?id=791234

8 years agoGDK W32: Plug a resource leak
Руслан Ижбулатов [Mon, 4 Sep 2017 14:42:11 +0000 (14:42 +0000)]
GDK W32: Plug a resource leak

Ensure that surfaces allocated in the impl are destroyed in finalize()

https://bugzilla.gnome.org/show_bug.cgi?id=787089

8 years agoUpdate Polish translation
Piotr Drąg [Sat, 2 Dec 2017 17:40:28 +0000 (18:40 +0100)]
Update Polish translation

8 years agogdk: Always emit motion after enter
Carlos Garnacho [Mon, 20 Nov 2017 17:54:40 +0000 (18:54 +0100)]
gdk: Always emit motion after enter

After a pointer emulating GDK_TOUCH_END event triggering a fake leave
notify with GDK_CROSSING_TOUCH_END mode, pointer_under_window will be
unset, which will make the next motion/touch_update event to trigger
an enter notify event again.

Up till there, that's fine, however the motion event is just consumed
in favor of the just synthesized enter notify event. This is unexpected
to clients like spice-gtk that will only update coordinates from motion
events, sending both enter and motion is more consistent with X11 and
will make them happy.

https://bugzilla.gnome.org/show_bug.cgi?id=791039

8 years agogdk/wayland: Restrict shortcut inhibition to keyboard grabs on toplevels
Carlos Garnacho [Thu, 26 Oct 2017 10:09:44 +0000 (12:09 +0200)]
gdk/wayland: Restrict shortcut inhibition to keyboard grabs on toplevels

It is unlikely that popup windows will contain anything that requires this
(popup menus being more interested in redirecting keyboard focus to
themselves). OTOH popup implementations that just grab the keyboard are
commonplace enough, it makes sense not to trigger inhibition for these.

https://bugzilla.gnome.org/show_bug.cgi?id=789268

8 years agoGDK W32: Remove an unnecessary type check
Руслан Ижбулатов [Sun, 26 Nov 2017 13:15:53 +0000 (13:15 +0000)]
GDK W32: Remove an unnecessary type check

No idea why it's here, the hash table can store any kind of data,
there's no reason why it wouldn't be able to store an old X string type.
Might be a holdout from the old days, when strings were handled in
a special way (stored directly in the clipboard?).

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Make sure drag source window is not NULL
Руслан Ижбулатов [Sun, 26 Nov 2017 13:10:44 +0000 (13:10 +0000)]
GDK W32: Make sure drag source window is not NULL

This prevents GTK from throwing a bunch of warnings when it tries
to get drag source window -> screen of that window -> ipc widget for that screen,
and then tries to attach a signal handler to that widget.

Specifically, this happens when we get a DnD move from another
application.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Special handling for DELETE requests
Руслан Ижбулатов [Sun, 26 Nov 2017 13:06:24 +0000 (13:06 +0000)]
GDK W32: Special handling for DELETE requests

1) Ensure that any DELETE requests from the target are sent to GDK, even if
   both the source and the target are in the same process and it
   is therefore possible to use a shortcut and call the handler directly
   in GTK layer
2) Ensure that target GDK doesn't do anything when GTK asks it to send
   a DELETE request, just report back immediately (the code up the stack
   does not check for successfullness when request is DELETE, so not giving
   it any data is OK).

The source code already synthesizes a DELETE request, so that side is
also taken care of.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Preserve the target value for change_property()
Руслан Ижбулатов [Sun, 26 Nov 2017 00:21:22 +0000 (00:21 +0000)]
GDK W32: Preserve the target value for change_property()

We need to know the target atom value to know when we need to
do something with side-effects (since side-effects are expressed via
special target values). Previously, the code side-stepped that by looking
at the data type (which was rather unique for the one side-effect
target that we supported, signalled by the TARGETS target),
but for the DELETE target that seems to be no longer an option, hence the new
field to carry this information past the convert_selection() routine.

This prevents GDK from throwing a warning when trying to convert
a DELETE target, which has no format or data objects set.

The side-effects for the DELETE target happen earlier, in GTK layer.
By the point it gets to change_property(), it's a no-op.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoUpdate Indonesian translation
Kukuh Syafaat [Wed, 29 Nov 2017 12:05:29 +0000 (12:05 +0000)]
Update Indonesian translation

8 years agoUpdate Indonesian translation
Kukuh Syafaat [Wed, 29 Nov 2017 12:04:08 +0000 (12:04 +0000)]
Update Indonesian translation

8 years agowayland: Fix indentation of previous commit
Christophe Fergeau [Wed, 29 Nov 2017 11:15:30 +0000 (12:15 +0100)]
wayland: Fix indentation of previous commit

8 years agowayland: emit GDK_SELECTION_CLEAR on owner changes
Christophe Fergeau [Tue, 28 Nov 2017 16:44:06 +0000 (17:44 +0100)]
wayland: emit GDK_SELECTION_CLEAR on owner changes

The wayland backend currently never emits GDK_SELECTION_CLEAR events.
GtkClipboard uses this signal in order to clear the clipboard owner when
the selection is set to something outside the application.
This commit ensures the wayland backend emits GDK_SELECTION_CLEAR before
setting the clipboard owner to NULL, as this means we lost the
selection.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
https://bugzilla.gnome.org/show_bug.cgi?id=790031

8 years agowayland: Remove unused data structure
Christophe Fergeau [Tue, 28 Nov 2017 16:43:24 +0000 (17:43 +0100)]
wayland: Remove unused data structure

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
https://bugzilla.gnome.org/show_bug.cgi?id=790031

8 years agoImprove the docs
Matthias Clasen [Wed, 29 Nov 2017 03:52:44 +0000 (22:52 -0500)]
Improve the docs

Document that gtk_application_is_inhibited can't
be guaranteed to work.

8 years agoUpdate Serbian translation
Милош Поповић [Mon, 27 Nov 2017 10:29:15 +0000 (10:29 +0000)]
Update Serbian translation

8 years agoUpdate Serbian translation
Милош Поповић [Mon, 27 Nov 2017 10:02:46 +0000 (10:02 +0000)]
Update Serbian translation

8 years agowayland: Don't provide gsetting if dconf is not available
Alex Ivanov [Wed, 15 Nov 2017 13:08:00 +0000 (13:08 +0000)]
wayland: Don't provide gsetting if dconf is not available

This makes gtk+ fall back to reading ~/.config/gtk-3.0/settings.ini
on systems with Wayland, but without dconf (do those exist?).

https://bugzilla.gnome.org/show_bug.cgi?id=790201

8 years agoentry: Undo ABI breakage from addition of insert_emoji
Jan Alexander Steffens (heftig) [Sun, 26 Nov 2017 21:32:36 +0000 (22:32 +0100)]
entry: Undo ABI breakage from addition of insert_emoji

https://bugzilla.gnome.org/show_bug.cgi?id=790862

8 years agoUpdate Turkish translation
Muhammet Kara [Sun, 26 Nov 2017 18:59:26 +0000 (18:59 +0000)]
Update Turkish translation

8 years agoUpdated Hebrew translation
Yosef Or Boczko [Sun, 26 Nov 2017 16:31:59 +0000 (18:31 +0200)]
Updated Hebrew translation

8 years agoUpdated Hebrew translation
Yosef Or Boczko [Sun, 26 Nov 2017 16:28:07 +0000 (18:28 +0200)]
Updated Hebrew translation

8 years agoUpdated Lithuanian translation
Aurimas Černius [Sat, 25 Nov 2017 19:33:28 +0000 (21:33 +0200)]
Updated Lithuanian translation

8 years agoFix a nefarious typo
Руслан Ижбулатов [Sat, 25 Nov 2017 17:04:48 +0000 (17:04 +0000)]
Fix a nefarious typo

8 years agoGDK W32: Ensure that selection request is processed
Руслан Ижбулатов [Mon, 18 Sep 2017 16:49:11 +0000 (16:49 +0000)]
GDK W32: Ensure that selection request is processed

To do that, run the message loop for one second or until the side-effect
of running the selection request handler is achieved (as opposed to
running it until the event is no longer queued).

The disavantage of this method is that if the event handling is
somehow missed (due to a variety of reasons - after all, it's not
a straight path from an event being queued to property_change()
being called), this will loop for one second. Since we do process
events during that time, this will not hang the application, but
might still restrict some of the functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Refuse to release mouse grab while in DnD mode
Руслан Ижбулатов [Thu, 14 Sep 2017 17:43:38 +0000 (17:43 +0000)]
GDK W32: Refuse to release mouse grab while in DnD mode

Handle WM_CANCELMODE and do nothing in response to it when DnD is
active. Otherwise pass it to DefWindowProc, which will call ReleaseCapture()
on our behalf.
This prevents us from losing mouse capture when alt-tabbing during DnD
(this includes the feature of Windows Explorer where dragging stuff over
a window button in the taskbar causes that window to receive focus, i.e.
keyboardless alt-tabbing).

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Update layered windows on opacity changes
Руслан Ижбулатов [Sat, 2 Sep 2017 15:25:36 +0000 (15:25 +0000)]
GDK W32: Update layered windows on opacity changes

Without this patch layered windows are only updated when they are moved
by the user or then their contents changes. This patch adds opacity
changes to the list of things that make GDK update a window. Without this
windows that don't redraw and are not moved by the used (DnD drag indicator
windows, for example) don't change their opacity.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoW32: Massive W32 DnD fix
Руслан Ижбулатов [Sat, 19 Aug 2017 12:06:27 +0000 (12:06 +0000)]
W32: Massive W32 DnD fix

Massive changes to OLE2 DnD protocol, which was completely broken before:
* Keep GdkDragContext and OLE2 objects separate (don't ref/unref them
  together, don't necessarily create them together).
* Keep IDataObject formats in the object itself, not in a global variable.
* Fix getdata() to look up the request target in its format list, not in the
  global hash table
* Create target GdkDragContext on each drag_enter, destroy it on drag_leave,
  whereas IDropTarget is created when a window becomes a drag destination
  and is re-used indefinitely.
* Query the source IDataObject for its supported types, cache them in the
  target (!) context. This is how GTK+ works, honestly.
* Remember current_src_object when we initiate a drag, to be able
  to detect later on that the data object is ours and use a
  shortcut when querying targets
* Make sure GDK_DRAG_MOTION is only sent when something changes
* Support GTK drag cursors
* Ensure that exotic GTK clipboard formats are registered
  (but try to avoid registering formats that can't be used between applications).
* Don't enumerate internal formats
* Ensure that DnD indicator window can't accept drags or receive any kind of input
  (use WS_EX_TRANSPARENT).
* Remove unneeded indentation in _gdk_win32_dnd_do_dragdrop()
* Fix indentation in gdk_win32_drag_context_drop_finish()
* Remove obsolete comments in _gdk_win32_window_register_dnd()
* Check for DnD in progress when processing WM_KILLFOCUS, don't emit a grab
  break event in such cases (this allows alt-tabbing while DnD is in progress,
  though there may be lingering issues with focus after dropping...)
* Support Shell ID List -> text/uri-list conversion, now it's possible
  to drop files (dragged from Explorer) on GTK+ applications
* Explicitly use RegisterClipboardFormatA() when we know that the string
  is not in unicode. Otherwise explicitly use RegisterClipboardFormatW()
  with a UTF8->UTF16 converted string
* Fix _gdk_win32_display_get_selection_owner() to correctly bail
  when selection owner HWND is NULL (looking up GdkWindow for NULL
  HWND always succeeds and returns the root window - not the intended
  effect)
* More logging
* Send DROP_FINISHED event after DnD loop ends
* Send STATUS event on feedback
* Move GetKeyboardState() and related code into _gdk_win32_window_drag_begin(),
  so that it's closer to the point where last_pt and start_pt are set
* Use & 0x80 to check for the key being pressed. Windows will set low-order bit
  to 1 for all mouse buttons to indicate that they are toggled, so simply
  checking for the value not being 0 is not enough anymore.
  This is probably a new thing in modern W32 that didn't exist before
  (OLE2 DnD code is old).
* Fixed (hopefully) and simplified HiDPI parts of the code.

Also adds managed DnD implementation for W32 GDK backend (for both
OLE2 and LOCAL protocols). Mostly a copy of the X11 backend code, but
there are some minor differences:
* doesn't use drag_window field in GdkDragContext,
  uses the one in GdkWin32DragContext exclusively
* subtracts hotspot offset from the window coordinates when showing
  the dragback animation
* tries to consistently support scaling and caches the scale
  in the context
* Some keynav code is removed (places where grabbing/ungrabbing should
  happen is marked with TODOs), and the rest is probably inert.

Also significantly changes the way selection (and clipboard) is handled
(as MSDN rightly notes, the handling for DnD and Clipboard
 formats is virtually the same, so it makes sense to handle
 both with the same code):
* Don't spam GDK_OWNER_CHANGE, send them only when owner
  actually changes
* Open clipboard when our process becomes the clipboard owner
  (we are doing it anyway, to empty the clipboard and *become* the owner),
  and then don't close it until a scheduled selection request event
  (with TARGETS target) is received. Process that event by announcing
  all of our supported formats (by that time add_targets() should have
  been called up the stack, thus the formats are known; just in case,
  add_targets() will also schedule a selection request, if one isn't
  scheduled already, so that late-coming formats can still be announced).
* Allow clipboard opening for selection_convert() to be delayed if it
  fails initially.
* The last two points above should fix all the bugs about GTK+ rising
  too much ruckus over OpenClipboard() failures, as owner change
  *is allowed* to fail (though not all callers currently handle
  that case), and selection_convert() is asynchronous to begin with.
  Still, this is somewhat risky, as there's a possibility that the
  code will work in unexpected ways and the clipboard will remain open.
  There's now logging to track the clipboard being opened and closed,
  and a number of failsafes that try to ensure that it isn't kept open
  for no reason.
* Added copious notes on the way clipboard works on X11, Windows and GDK-W32,
  also removed old comments in DnD implementation, replaced some of them
  with the new ones
* A lot of crufty module-global variables are stuffed into a singleton
  object, GdkWin32Selection. It's technically possible to make it a
  sub-object of the Display object (the way Wayland backend does),
  but since Display object on W32 is a singleton anyway... why bother?
* Fixed the send_change_events() a bit (was slightly broken in one of the
  previous iterations)
* Ensure that there's no confusion between selection conversion (an artifact
  term from X11) and selection transmutation (changing the data to be W32-compatible)
* Put all the transmutation code and format-target-matching code into gdkselection-win32.c,
  now this code isn't spread across multiple files.
* Consequently, moved some code away from gdkproperty-win32.c and gdkdnd-win32.c
* Extensive format transmutation checks for OLE2 DnD and clipboard.
  We now keep track of which format mappings are for transmutations,
  and which aren't (for example, when formats are passed as-is, or when
  a registered name is just an alias)
* Put transmutation code into separate functions

* Ensure that drop target keeps a format->target map for supported formats,
  this is useful when selection_convert() is called, as it only receives a
  single target and no hints on the format from which the data should
  be transmuted into this target.
* Add clear_targets() on W32, to de called by GTK
* Use g_set_object() instead of g_ref_object() where it is allowed.
* Fix indentation (and convert tabs to spaces), remove unused variables

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Don't leak the atom name string
Руслан Ижбулатов [Tue, 22 Aug 2017 14:23:14 +0000 (14:23 +0000)]
GDK W32: Don't leak the atom name string

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: Fix a typo in OLE2 DnD code
Руслан Ижбулатов [Tue, 15 Aug 2017 13:12:43 +0000 (13:12 +0000)]
GDK W32: Fix a typo in OLE2 DnD code

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoOnly register application/x-rootwindow-drop on X11
Руслан Ижбулатов [Tue, 15 Aug 2017 13:07:01 +0000 (13:07 +0000)]
Only register application/x-rootwindow-drop on X11

application/x-rootwindow-drop is not useful anywhere else,
so put it under #ifdef GDK_WINDOWING_X11

On W32 this prevents toplevels from automatically becoming valid
drop targets with a useless drop type.

https://bugzilla.gnome.org/show_bug.cgi?id=786509

8 years agoGDK W32: More flexible modal operation mode
Руслан Ижбулатов [Fri, 11 Aug 2017 07:00:41 +0000 (07:00 +0000)]
GDK W32: More flexible modal operation mode

Instead of using a boolean to indicate a modal operation being in progress,
use a set of flags, and allow these to be set and unset independently.

Specifically, this allows WM_CAPTURECHANGED handler to only act when a drag-move or
drag-resize modal operation is in progress, and ignore DND (which can also cause
WM_CAPTURECHANGED to be posted). This avoids a crash due to assertion failure when
OLE2 DND code tries to end a modal operation that was already ended by the WM_CAPTURECHANGED
handler.

https://bugzilla.gnome.org/show_bug.cgi?id=786121

8 years agoBe more specific in ::insert-emoji Since tag
Daniel Boles [Thu, 23 Nov 2017 17:17:08 +0000 (17:17 +0000)]
Be more specific in ::insert-emoji Since tag

I had been unsure whether to include the minor version, but
:show-emoji-icon already did, so do the same here to match.

8 years agoGDK W32: fix monitor pruning code
Руслан Ижбулатов [Thu, 23 Nov 2017 07:15:28 +0000 (07:15 +0000)]
GDK W32: fix monitor pruning code

Decrement the counter for each removed element, otherwise we skip
one element every time we remove one. Also, no need for continue here.

8 years agoAdd Since to ::insert-emoji, and some trivialities
Daniel Boles [Wed, 22 Nov 2017 22:35:25 +0000 (22:35 +0000)]
Add Since to ::insert-emoji, and some trivialities

Document when these keybinding signals were added.

8 years agotext view: Support the Emoji chooser
Matthias Clasen [Wed, 22 Nov 2017 21:47:43 +0000 (16:47 -0500)]
text view: Support the Emoji chooser

Similar to GtkEntry, add an "Insert Emoji" context
menu item, and add the same keybindings. We don't
add the icon here, since it is not clear where it
would go.

https://bugzilla.gnome.org/show_bug.cgi?id=790029

8 years agoFix indentation mishap
Matthias Clasen [Wed, 22 Nov 2017 21:46:49 +0000 (16:46 -0500)]
Fix indentation mishap

8 years agoSpinButton: Explain meaning of nullable Adjustment
Daniel Boles [Wed, 22 Nov 2017 20:27:26 +0000 (20:27 +0000)]
SpinButton: Explain meaning of nullable Adjustment

configure() marked the @adj argument as (allow-none) but did not explain
what passing NULL would do. Fix that, and move it to (nullable) as well.

8 years agodoc: Replace uses of #NULL with %NULL
Daniel Boles [Wed, 22 Nov 2017 19:19:36 +0000 (19:19 +0000)]
doc: Replace uses of #NULL with %NULL

8 years agoCellRendererPixbuf: Improve property docs
Daniel Boles [Wed, 22 Nov 2017 18:57:48 +0000 (18:57 +0000)]
CellRendererPixbuf: Improve property docs

Add Since annotations for the stock-* properties.
Add a doc comment for :stock-size in order to link to GtkIconSize.
Document :stock-detail as deprecated. It does nothing & is gone in GTK+4

8 years agodoc: TextLayout: Add missing (out) annotations
Daniel Boles [Tue, 21 Nov 2017 10:52:35 +0000 (10:52 +0000)]
doc: TextLayout: Add missing (out) annotations

and move from (allow-none) to (optional)

8 years agoemoji chooser: break out a helper function
Matthias Clasen [Mon, 20 Nov 2017 03:40:07 +0000 (22:40 -0500)]
emoji chooser: break out a helper function

This is just a small cleanup.

8 years agoentry: Add a key binding for the emoji chooser
Matthias Clasen [Sun, 19 Nov 2017 03:44:12 +0000 (22:44 -0500)]
entry: Add a key binding for the emoji chooser

Make Ctrl-. and Ctrl-; bring up the emoji chooser.

https://bugzilla.gnome.org/show_bug.cgi?id=789160

8 years agoemoji chooser: Make menu key work as expected
Matthias Clasen [Sun, 19 Nov 2017 23:03:07 +0000 (18:03 -0500)]
emoji chooser: Make menu key work as expected

Whenever we have a right-click action, we should make
the menu key work as a keyboard-accessible alternative.

8 years agoemoji chooser: handle right-click
Matthias Clasen [Sun, 19 Nov 2017 21:18:28 +0000 (16:18 -0500)]
emoji chooser: handle right-click

Whereever we handle long-press for touch, it makes sense to handle
right-click as a faster alternative for mouse-based interaction.

This commit makes right-click work to bring up the variation
selector for Emojis.

8 years agoTrivial cleanup
Matthias Clasen [Sun, 19 Nov 2017 13:29:37 +0000 (08:29 -0500)]
Trivial cleanup

Better to use G_SOURCE_REMOVE than FALSE, for clarity.

8 years agoemoji chooser: Don't leak gestures
Matthias Clasen [Sun, 19 Nov 2017 13:28:35 +0000 (08:28 -0500)]
emoji chooser: Don't leak gestures

We were not freeing these gestures as we should.

8 years agoemojichooser: animate the adjustment
Benjamin Otte [Sun, 5 Nov 2017 15:12:35 +0000 (16:12 +0100)]
emojichooser: animate the adjustment

... instead of doing a dance with the scrolled window to get it to scroll
the adjustment.